home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
MacHack 2000
/
MacHack 2000.toast
/
pc
/
The Hacks
/
Softshoe
/
Lisa's Mac Parts
/
Files
/
Locations
/
FileLocation.h
< prev
next >
Wrap
Text File
|
2000-06-23
|
4KB
|
127 lines
// FileLocation.h
#ifndef FileLocation_h
#define FileLocation_h
#ifndef Volume_h
#include "Volume.h"
#endif
#ifndef DirectoryID_h
#include "DirectoryID.h"
#endif
#ifndef ConstPString_h
#include "ConstPString.h"
#endif
#ifndef FileType_h
#include "FileType.h"
#endif
#ifndef FileSignature_h
#include "FileSignature.h"
#endif
#ifndef ScriptID_h
#include "ScriptID.h"
#endif
#ifndef FileID_h
#include "FileID.h"
#endif
#ifndef Directory_h
#include "Directory.h"
#endif
class PString;
class CatInfo;
class FileLocation: public FSSpec
{
public:
FileLocation();
FileLocation( const FSSpec& source ) : FSSpec( source ) {}
FileLocation( Directory );
FileLocation( Directory, ConstPString );
::Volume Volume() const { return ::Volume( vRefNum ); }
DirectoryID ParentID() const { return DirectoryID( parID ); }
Directory Parent() const { return Directory( Volume(), ParentID() ); }
ConstPString Name() const { return name; }
void Set( Directory, ConstPString );
void operator=( Directory );
void SetVolume( ::Volume v ) { vRefNum = v.RefNum(); };
void SetParentID( DirectoryID d ) { parID = d.Number(); };
void SetParent( Directory d ) { vRefNum = d.Volume().RefNum(); parID = d.ID().Number(); };
void SetName( ConstPString );
void SetName( ConstPString, uint32 );
bool NameIsValid() const;
void SetToValidName( ConstPString );
void SetToValidName();
bool IsRoot() const { return ParentID() == DirectoryID::AboveRoot(); }
FileLocation Child( ConstPString ) const;
FileLocation Sibling( ConstPString ) const;
void Up();
void Down( ConstPString );
void Sideways( ConstPString );
Directory AsDirectory() const;
bool Exists() const;
void FindUnusedName();
DirectoryID GetDirectoryID() const;
FileID GetFileID() const;
static void ThrowError( OSErr );
};
bool operator==( const FileLocation&, const FileLocation& );
inline bool operator!=( const FileLocation& a, const FileLocation& b ) { return !(a == b); }
// These functions assume you know what's out there.
// They throw if a source parameter does not exist,
// if a source parameter is the wrong type,
// or if a destination parameter exists.
// This narrow license makes then safer to use.
void CreateFile( const FileLocation& destination, FileType, ScriptID script = ScriptID( smSystemScript ) );
void CreateFile( const FileLocation& destination, FileType, FileSignature, ScriptID script = ScriptID( smSystemScript ) );
Directory CreateDirectory( const FileLocation& destination, ScriptID script = ScriptID( smSystemScript ) );
void DeleteDirectory( const FileLocation& source );
void DeleteFile( const FileLocation& source );
void LockFile( const FileLocation& source );
void UnlockFile( const FileLocation& source );
void MoveFile( const FileLocation& source, const FileLocation& destination );
void CopyFile( const FileLocation& source, const FileLocation& destination ); // in CopyFile.cp
void SwapFiles( const FileLocation& source1, const FileLocation& source2 );
// These do the same things, but can avoid duplicating a GetCatInfo call.
void DeleteDirectory( const CatInfo& source );
void DeleteFile( const CatInfo& source );
void MoveFile( const CatInfo& source, const FileLocation& destination );
void CopyFile( const CatInfo& source, const FileLocation& destination ); // in CopyFile.cp
// These functions are for when you want to get your way.
// They may delete destination files or directories, or create
// empty destination directories.
void ForceDirectoryExistence( const FileLocation& destination );
void ForceNonexistence( const FileLocation& source );
void ForceMoveFile( const FileLocation& source, const FileLocation& destination );
void ForceCopyFile( const FileLocation& source, const FileLocation& destination );
void DeleteRecursively( const FileLocation& );
#endif